package com.weavernorth.sysap.dao;


import com.weavernorth.sysap.bean.*;
import org.apache.log4j.Logger;


public interface SyncOrgStrucDao {
    /**
     * 插入分部信息
     *
     * @param hrmSubCompany 分部信息
     * @return
     */
    boolean insertHrmSubCompany(HrmSubCompany hrmSubCompany);

    /**
     * 更新分部信息
     *
     * @param hrmSubCompany 分部信息
     * @return
     */
    boolean updateHrmSubCompany(HrmSubCompany hrmSubCompany);

    /**
     * 插入部门信息
     *
     * @param hrmDepartment 部门信息
     * @return 插入部门信息是否成功
     */
    boolean insertHrmDepartment(HrmDepartment hrmDepartment);

    /**
     * 更新部门数据
     *
     * @param hrmDepartment 部门信息
     * @return 更新部门信息是否成功
     */
    boolean updateHrmDepartment(HrmDepartment hrmDepartment);
    /**
     * 插入岗位信息到OA表
     *
     * @param hrmJobtitles 岗位信息
     * @return 同步到OA时候成功
     */
    boolean insertHrmJobTitle(HrmJobtitles hrmJobtitles);

    /**
     * 更新岗位信息表
     *
     * @param hrmJobtitles 岗位信息
     * @return 同步到OA时候成功
     */
    boolean updateHrmJobTitleTable(HrmJobtitles hrmJobtitles);



    /**
     * 插入人员信息
     *
     * @param hrmResource 人员信息
     * @return
     */
    boolean insertHrmResource(HrmResource hrmResource);

    /**
     * 更新人员信息
     *
     * @param hrmResource 人员信息
     * @return
     */
    boolean updateHrmResource(HrmResource hrmResource);


    /**
     * 通过编码转ID
     *
     * @param tablename 表名
     * @param code      编码
     * @return
     */
    String getIdByCode(String tablename, String code);

    /**
     * 根据职务类型的中文名获取职务类型的id
     *
     * @return 职务类型的id
     */
    int getJobActivitiesType();

    /**
     * 如果不存在职务，则插入该名字的职务
     *
     * @param name 职务名
     * @return 职务的id
     */
    String insertHrmJobActivities(String name);

    /**
     * 获取新增职务后，最大的id值
     *
     * @return
     */
    int getActivitieMaxId();

    /**
     * 岗位职务是否存在
     *
     * @param name 职务名
     * @return 职务id
     */
    String jobActivitieIsRepeat(String name);

    /**
     * 根据部门ID得到所属分部ID
     *
     * @param depId 部门id
     * @return
     */
    String getSubIdByDepId(String depId);

    /**
     * 获取直接上级Id和所有上级
     *
     * @param managerid 上级标记值，eg:编号
     * @param managerid 关键字段
     * @return
     */
    String getManagerIdAndStr(Logger log, String managerid);

    /***
     * 得到人员最大ID
     *
     * @return
     */
    int getHrmMaxid();

    /**
     * 插入同步结果记录到同步日志表
     *
     * @param syncLog 同步日志数据
     */
    void insertSyncLog(SyncLog syncLog);


    /**
     * 查询部门表里是否存在,处理部门变为分部的数据
     */

    void dealDepartment(String strCompanyCode);

    /**
     * 查询分部表是否存在此部门编码,有则处理为封存
     */

    void dealSubcompany(String strDepartCode);

    /**
     * 插入分部至部门表
     */

    void insertDepartFromSubcompany(String strJobtitlesDepartCode);

}
